package com.yonyougov.devops.cruxcisupport.userrole;

import com.yonyougov.devops.cruxcisupport.role.RoleEntity;
import com.yonyougov.devops.cruxcisupport.userrole.dto.service.UserPageByRoleRaramLikeDto;
import com.yonyougov.devops.cruxcisupport.userrole.dto.service.UserRoleAddBatchDto;
import com.yonyougov.devops.cruxcisupport.userrole.dto.service.UserRoleByUserParamPageLikeDto;
import com.yonyougov.devops.cruxcisupport.userrole.vo.UserRoleByRoleParamPageLikeVo;
import com.yonyougov.devops.cruxcisupport.userrole.vo.UserRoleByUserParamPageLikeVo;
import com.yonyougov.devops.fwc.core.entity.Pagination;
import com.yonyougov.devops.fwc.core.service.BaseService;

import java.math.BigInteger;
import java.util.List;

/**
 * t_user_role服务
 */
public interface UserRoleService extends BaseService<UserRoleEntity, BigInteger> {
    //<!--用户自定义代码开始-->

    /**
     * 根据用户方面的参数查询关联关系(分页+模糊)
     *
     * @param userParamPageLikeDto 用户方面的参数
     * @return Pagination<UserPageLikeVo>
     */
    Pagination<UserRoleByUserParamPageLikeVo> findByUserParamPageLike(UserRoleByUserParamPageLikeDto userParamPageLikeDto);

    /**
     * 根据用户id查询所关联的角色列表
     *
     * @param userId 用户id
     * @return 角色实体
     */
    List<RoleEntity> findAllByUserId(BigInteger userId);

    /**
     * 根据主键批量删除 用户和角色的关联关系
     *
     * @param ids 主键集合
     */
    void deleteBatchUserRoleByIds(List<BigInteger> ids);

    /**
     * 根据角色方面的参数查询关联关系(分页+模糊)
     *
     * @param roleParamPageLikeDto 角色方面的参数
     * @return Pagination<UserPageLikeVo>
     */
    Pagination<UserRoleByRoleParamPageLikeVo> findByRoleParamPageLike(UserPageByRoleRaramLikeDto roleParamPageLikeDto);

    /**
     * 用户批量关联角色
     *
     * @param userRoleAddBatchDto 批量关联Dto
     */
    void addMulUserRole(UserRoleAddBatchDto userRoleAddBatchDto);
    //<!--用户自定义代码结束-->
}
